package com.java.test1;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class TestDriver {
	public static void main(String[] args) {
		test03();
	}

	/**
	 * TreeMap的使用方法
	 */
	private static void test03() {
		// 创建一个linkedHashMap的实例对象
		// 使用面向接口的编程方法，父类指代子类
		Map map = new TreeMap();
		// HashMap的写入操作
		map.put("zhangsan", 15);
		map.put("lisi", 62);
		map.put("zhaoliu", 80);
		map.put("zhaoliu", 20);
//		map.put(null, 20);
		// linkedHashMap的读取操作
		// （1.1）采用foreach进行读取
		System.out.println("使用foreach的方法中的keyset（）方法来读取TreeMap中的元素：");
		// 将LinkedHashMap中的元素用keySet方法表示出来
		Set setKeys = map.keySet();
		// 然后将对HashMap的遍历转换成对keySet的遍历
		for (Object obj : setKeys) {
			// 使用get方法进行读取key值
			Object val = map.get(obj);
			// 输出信息
			System.out.println(obj + "对应的年龄为：" + val + "岁！");

		}
		System.out.println("==================");

		// （1.1）采用foreach进行读取
		System.out.println("使用foreach的方法中的entrySet（）方法来读取TreeMap中的元素：");
		// 将linkedHashMap中的元素用entrySet（）方法表示出来
		Set setEntrys = map.entrySet();
		// 然后将对HashMap的遍历转换成对entrySet（）的遍历
		for (Object objEntry : setEntrys) {
			// 使用get方法进行读取key值
			Object key = ((Map.Entry) objEntry).getKey();
			// 从键值对中获取value的值
			Object val = ((Map.Entry) objEntry).getValue();
			// 输出信息
			System.out.println(key + "对应的是" + val);

		}

		// （2）采用迭代器进行读取
		System.out.println("==============");
		System.out.println("使用迭代器中的keySet方法进行读取TreeMap的值：");
		// 获取当前集合的迭代器对象
		Iterator it = setKeys.iterator();
		// hasNext用来判断是否有下一个对象，next（）用来指向下一个对象
		while (it.hasNext()) { // 遍历取出值
			Object obj = it.next();
			// 使用get来取出对应值
			Object val = map.get(obj);
			System.out.println(obj + "对应的年龄为：" + val + "岁！");
		}

	}

	/**
	 * linkedHashMap的使用方法
	 */
	private static void test02() {
		// 创建一个linkedHashMap的实例对象
		// 使用面向接口的编程方法，父类指代子类
		Map<String, Object> map = new LinkedHashMap<String, Object>();
		// HashMap的写入操作
		map.put("zhangsan", 15);
		map.put("lisi", 62);
		map.put("zhaoliu", 80);
		map.put("zhaoliu", 20);
		map.put(null, 20);
		// linkedHashMap的读取操作
		// （1.1）采用foreach进行读取
		System.out.println("使用foreach的方法中的keyset（）方法来读取linkedHashMap中的元素：");
		// 将LinkedHashMap中的元素用keySet方法表示出来
		Set<String> setKeys = map.keySet();
		// 然后将对HashMap的遍历转换成对keySet的遍历
		for (String obj : setKeys) {
			// 使用get方法进行读取key值
			Object val = map.get(obj);
			// 输出信息
			System.out.println(obj + "对应的年龄为：" + val + "岁！");

		}
		System.out.println("==================");

		System.out.println("==================");
		// （1.1）采用foreach进行读取
		System.out.println("使用foreach的方法中的entrySet（）方法来读取linkedHashMap中的元素：");
		// 将linkedHashMap中的元素用entrySet（）方法表示出来

		Set<Map.Entry<String, Object>> setEntrys = map.entrySet();
		// 然后将对HashMap的遍历转换成对entrySet（）的遍历
		for (Entry<String, Object> obj : setEntrys) {
			// 使用get方法进行读取key值
			String key = obj.getKey();
			Object val = obj.getValue();
			// 输出信息
			System.out.println(key + "对应的是" + val);

		}

		// （2）采用迭代器进行读取
		System.out.println("==============");
		System.out.println("使用迭代器中的keySet方法进行读取linkedHashMap的值：");
		// 获取当前集合的迭代器对象
		Iterator<String> it = setKeys.iterator();
		// hasNext用来判断是否有下一个对象，next（）用来指向下一个对象
		while (it.hasNext()) { // 遍历取出值
			String obj = it.next();
			// 使用get来取出对应值
			Object val = map.get(obj);
			System.out.println(obj + "对应的年龄为：" + val + "岁！");
		}

	}

	/**
	 * HashMap的使用方法
	 */
	private static void test01() {
		// 创建一个HashMap的实例对象
		// 使用面向接口的编程方法，父类指代子类
		Map<String, Object> map = new HashMap<>();
		// HashMap的写入操作
		map.put("zhangsan", 15);
		map.put("lisi", 62);
		map.put("zhaoliu", 80);
		map.put("zhaoliu", 20);
		map.put(null, 20);
		// HashMap的读取操作
		// （1.1）采用foreach进行读取
		System.out.println("使用foreach的方法中的keySet方法来读取HashMap中的元素：");
		// 将HashMap中的元素用keySet方法表示出来
		Set<String> setKeys = map.keySet();
		// 然后将对HashMap的遍历转换成对keySet的遍历
		for (Object obj : setKeys) {
			// 使用get方法进行读取key值
			Object val = map.get(obj);
			// 输出信息
			System.out.println(obj + "对应的年龄为：" + val + "岁！");

		}
		System.out.println("==================");
		// （1.2）采用foreach进行读取
		System.out.println("使用foreach的方法中的entrySet（）方法来读取HashMap中的元素：");
		// 将HashMap中的元素用entrySet（）方法表示出来
		Set<Map.Entry<String, Object>> setEntrys = map.entrySet();
		// 然后将对HashMap的遍历转换成对entrySet（）的遍历
		for (Entry<String, Object> obj : setEntrys) {
			// 使用get方法进行读取key值
			String key = obj.getKey();
			Object val = obj.getValue();

			// 输出信息
			System.out.println(key + "对应的是" + val);

		}

		// （2）采用迭代器进行读取
		System.out.println("==============");
		System.out.println("使用迭代器中的keySet方法进行读取HashMap的值：");
		// 获取当前集合的迭代器对象
		Iterator<String> it = setKeys.iterator();
		// hasNext用来判断是否有下一个对象，next（）用来指向下一个对象
		while (it.hasNext()) { // 遍历取出值
			String obj = it.next();
			// 使用get来取出对应值
			Object val = map.get(obj);
			System.out.println(obj + "对应的年龄为：" + val + "岁！");
		}

	}
}
